package br.com.sgi.bean;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import br.com.sgi.autentication.UsuarioLogado;
import br.com.sgi.model.Funcao;
import br.com.sgi.model.Igreja;
import br.com.sgi.model.Sistema;
import br.com.sgi.model.Users;
import br.com.sgi.service.FuncaoService;
import br.com.sgi.service.IgrejaService;
import br.com.sgi.service.SistemaService;
import br.com.sgi.util.Mensagem;

@Controller("funcaoCadastroBean")
public class FuncaoCadastroBean {

	@Autowired
	private FuncaoService funcaoService;
	
	@Autowired
	private SistemaService sistemaService;
	@Autowired
	private IgrejaService igrejaService;
	
	private Funcao funcao;
	private Funcao funcaoPesquisa;
	
	
	private Long coFuncao;
	
	private List<Funcao> listaFuncao;
	
	
	
	
	/**
	 * Cadastro ou atualizacao de uma Funcao
	 */
	public void salvar(){
		Users users = UsuarioLogado.getUsuarioLogado();
		if(funcao != null && users != null){
			Sistema sistema = null;
			Igreja igrejaFrequenta = null;
			if(funcao.getCoSeqFuncao() == null){
				sistema = sistemaService.findById(users.getSistema().getCoSeqSistema());
				//funcao.setSistema(sistema);
				igrejaFrequenta = igrejaService.buscarIgrejaPorId(users.getIgreja().getCoSeqIgreja());
				funcao.setIgreja(igrejaFrequenta);
				funcaoService.salvar(funcao);
				listaFuncao = funcaoService.buscarTodasFuncoes();
				Mensagem.infoMsg("sucesso.MGS_02");
				funcao = new Funcao();
			}else{
				funcaoService.atualizar(funcao);
				listaFuncao = funcaoService.buscarTodasFuncoes();
				Mensagem.infoMsg("sucesso.MGS_03");
				funcao = new Funcao();
			}
		}
	}
	
	/**
	 * realiza a exclucao de uma funcao
	 */
	public void excluir(){
		if(coFuncao != null){
			funcaoService.excluir(coFuncao);
			listaFuncao = funcaoService.buscarTodasFuncoes();
			Mensagem.infoMsg("sucesso.MSG_01");
		}
		
	}
	
	/**
	 * pesquisa funcoes
	 */
	public void pesquisar(){
		listaFuncao = funcaoService.buscarFuncaoPorFiltros(funcaoPesquisa.getNoFuncao());
	}
	
	public Funcao getFuncao() {
		if(funcao == null)
			funcao = new Funcao();
		return funcao;
	}

	public void setFuncao(Funcao funcao) {
		this.funcao = funcao;
	}

	public Funcao getFuncaoPesquisa() {
		if(funcaoPesquisa == null)
			funcaoPesquisa = new Funcao();
		return funcaoPesquisa;
	}
	

	public void setFuncaoPesquisa(Funcao funcaoPesquisa) {
		this.funcaoPesquisa = funcaoPesquisa;
	}

	public List<Funcao> getListaFuncao() {
		if(listaFuncao == null)
			listaFuncao = funcaoService.buscarTodasFuncoes();
		return listaFuncao;
	}

	public void setListaFuncao(List<Funcao> listaFuncao) {
		this.listaFuncao = listaFuncao;
	}

	public Long getCoFuncao() {
		return coFuncao;
	}

	public void setCoFuncao(Long coFuncao) {
		this.coFuncao = coFuncao;
	}
	
}
